"""
根据参考图像风格生成相似图（ref_mode="refonly"）
这种方式适合风格迁移场景的图像绘画，比如在参考图像上增加新的内容等。目前，wanx-v1模型在该场景下的生成效果不太稳定，请您耐心尝试。
"""
from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis
import os


prompt = "有一只黑色的小猫"

# 上传参考图方式：url链接和本地路径二选一
# 使用公网url链接
ref_img = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241031/gpqnqy/house.png"
# 使用本地文件路径
sketch_image_url = './house.png'

# 同步调用
print('----sync call, please wait a moment----')

rsp = ImageSynthesis.call(api_key=os.getenv("DASHSCOPE_API_KEY"),
                          model=ImageSynthesis.Models.wanx_v1,
                          prompt=prompt,
                          n=1,
                          style='<auto>',
                          # sketch_image_url=sketch_image_url,
                          ref_img=ref_img,
                          ref_mode='refonly',
                          ref_strength=0.7,
                          size='1024*1024')
if rsp.status_code == HTTPStatus.OK:
    print(rsp.output)

    # 保存图片
    for result in rsp.output.results:
        file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
        with open('./%s' % file_name, 'wb+') as f:
            f.write(requests.get(result.url).content)
else:
    print('sync_call Failed, status_code: %s, code: %s, message: %s' %
          (rsp.status_code, rsp.code, rsp.message))